package busco

import "wails/schema/enums/busenum"

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计
type B统计 struct {
	// 统计功能所在主体
	// @alias 所在主体
	S所在主体 string `link:"主体"`

	// 功能的扩展配置
	// 设置后，初始化功能时，同时创建统计
	// 如果挂载到任务，接受任务后创建统计
	// @alias 功能
	G功能 string `link:"功能"`

	// @alias 标旗
	B标旗 map[busenum.T统计标旗]bool

	// 开始统计的条件
	// @alias 开始条件
	C开始条件 map[string]string `link:"条件"`

	// 停止统计的条件
	// @alias 停止条件
	C停止条件 map[string]string `link:"条件"`

	// @alias 重置条件
	C重置条件 map[string]string `link:"条件"`

	// 触发统计时执行
	// @alias 统计执行
	C统计执行 string `link:"执行"`

	// 获得得分同时获得的奖励
	// @alias 统计奖励
	T统计奖励 string `link:"奖励"`

	// 场景: 默认标旗，不设置得分，得分保存在统计对象中。用于独立的统计。
	// 场景: 默认标旗，设置得分的最大值最小值等，得分保存在统计对象中。用于独立的统计。
	// 场景: 设置【允许统计到得分对象】，多个统计对象的得分增加到到同一得分对象。
	// 场景: 设置【允许统计到得分对象】，得分需要保存在多个主体中
	// @alias 得分
	D得分 string `link:"得分"`

	// @alias 得分转化比率
	D得分转化比率 float64 `value:"1.0"`
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_事件
type B统计_事件 struct {
	B统计

	// @alias 监听事件
	J监听事件 map[string]interface{} `_type:"事件"`
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_离线时长
type B统计_离线时长 struct {
	B统计
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_角色属性
type B统计_角色属性 struct {
	B统计
	// @alias 等级
	D等级 bool
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_击杀
type B统计_击杀 struct {
	B统计
	// @alias 被击杀的单位
	B被击杀的单位 *SEffectWhichUnit
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_副本属性
type B统计_副本属性 struct {
	B统计
	// @alias 闯关时长
	S闯关时长 bool
	// @alias 首领血量
	S首领血量 bool
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_时长
type B统计_时长 struct {
	B统计

	// 与开始时间间隔的间隔将转化成得分
	// @alias 开始时间
	D开始时间 *S查找时间

	// todo: 未实现
	// 设置成秒, 则每秒获得1分
	// 设置成分, 则每分钟获得1分
	// @alias 得分单位
	C得分单位 busenum.S时间间隔单位

	// 触发得分的频率，避免频繁触发，默认为60秒
	// 单位秒
	// @alias 得分频率
	C得分频率 int
}

// @schema_export --ident=schema --json --config=统计
// @schema_go
// @cache_go
// @cache_ts
// @alias 统计_到达时间
type B统计_到达时间 struct {
	B统计

	// 到达时间后，得分加一，并进入【已关闭】状态
	// @alias 到达时间
	D到达时间 *S查找时间

	// @alias 到达时间后重置
	Y到达时间后重置 bool
}
